package xyz.sekai52799.answer.a3001_a3200;

public class Question3034 {

//    给你一个下标从 0 开始长度为 n 的整数数组 nums ，和一个下标从 0 开始长度为 m 的整数数组 pattern ，pattern 数组只包含整数 -1 ，0 和 1 。
//
//    大小为 m + 1 的
//            子数组
//    nums[i..j] 如果对于每个元素 pattern[k] 都满足以下条件，那么我们说这个子数组匹配模式数组 pattern ：
//
//    如果 pattern[k] == 1 ，那么 nums[i + k + 1] > nums[i + k]
//    如果 pattern[k] == 0 ，那么 nums[i + k + 1] == nums[i + k]
//    如果 pattern[k] == -1 ，那么 nums[i + k + 1] < nums[i + k]
//    请你返回匹配 pattern 的 nums 子数组的 数目 。



    public int countMatchingSubarrays(int[] nums, int[] pattern) {
        int n = nums.length;
        int m = pattern.length;
        int[] relation = new int[n - 1];
        for (int i = 0; i < n-1; i++) {
            if (nums[i] < nums[i+1]) {
                relation[i] = 1;
            }
            if (nums[i] == nums[i+1]) {
                relation[i] = 0;
            }
            if (nums[i] > nums[i+1]) {
                relation[i] = -1;
            }
        }
        int result = 0;
        for (int i = 0; i < n-m ; i++) {
            for (int j = 0; j < m; j++) {
                if (relation[i+j] != pattern[j]) {
                       break;
                }
                if (j == m-1) {
                    result++;
                }
            }
        }
        return result;
    }
}
